home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / modula2 / drucker / lpr / drucktre.def < prev    next >
Encoding:
Modula Definition  |  1994-09-22  |  4.6 KB  |  96 lines

  1. DEFINITION MODULE DruckTreiber;
  2.  
  3. (************************************************************************
  4.  * Druckertreiber-Modul für LPR-Modula2                                 *
  5.  *                                                                      *
  6.  * V2.0, (c) 9/1989 by Uwe Ischebeck, Ringstr.31, 6900 Heidelberg       *
  7.  *                                                                      *
  8.  * Die Druckertreiber verwendet eine für 1stWordPlus vorgesehene        *
  9.  * Druckeranpassung. Außerdem werden die in WordPlus nicht bekannten    *
  10.  * Funktionen 34hex bis 40hex unterstützt. Näheres siehe DRUCKTRE.DOC.  *
  11.  ************************************************************************)
  12.  
  13. CONST MaxFunc = 040H;
  14.       (* FehlerNummern *)
  15.       EOK         =   0;
  16.       EFormat     = -71; (* HEX-Datei Formatfehler                   *)
  17.       EBuffOv     = -79; (* S.a-Puffer übergelaufen                  *)
  18.       (* es können auch andere Fehler -70 bis -79  auftreten. Dann   *
  19.        * bitte mit ausführlicher Beschreibung an mich schicken.      *)
  20.  
  21. TYPE String = ARRAY[0..79] OF CHAR;
  22.      StringPointer = POINTER TO String;
  23.      TDruckSteuer = RECORD
  24.                       d : String;
  25.                       filehandle : INTEGER;
  26.                       geladen,LQ : BOOLEAN;
  27.                       ersatz : CHAR;
  28.                       n : StringPointer;
  29.                       par : ARRAY[0..5] OF CHAR;
  30.                       c : ARRAY[0..MaxFunc] OF INTEGER;
  31.                       z : ARRAY[0..255] OF INTEGER;
  32.                       a : ARRAY[0..2047] OF CHAR
  33.                     END;
  34.  
  35. VAR S : TDruckSteuer;
  36.     CfgError : INTEGER; (* Fehlernummer, #0 wenn Fehler *)
  37.              (* Fehlernummern -1..-67 kommen vom GEMDOS *)
  38.              (*              -70..-79 vom Druckertreiber*)
  39.  
  40. PROCEDURE ConfigPrinter( GemdosPrnOutHandle : INTEGER; 
  41.                          name : ARRAY OF CHAR; ersatz : CHAR );
  42.   (******************************************************************
  43.    * Liest die CFG.Datei "name" im GST-Format und weist der         * 
  44.    * DRUCKAUSGABE den Kanal GemdosPrnOutHandle zu.                  *
  45.    * Wenn die Ausgabe in eine Datei erfolgt, muß diese vom aufru-   *
  46.    * fenden Modul geöffnet und auch wieder geschlossen werden.      *
  47.    * Standartausgabekanäle: 1 - Stdout (Monitor)                    *
  48.    *                        2 - serieller Port                      *
  49.    *                        3 - paralleler Port                     *
  50.    * Ist GemdosPrnOutHandle<0 wird als Standartwert 3 angenommen.   *
  51.    * In "ersatz" kann ein Ersatzzeichen angegeben werden, das für   *
  52.    * ein nicht verfügbares Zeichen gedruckt werden soll.            *
  53.    ******************************************************************)
  54.    
  55. PROCEDURE PrintHandle( handle : INTEGER );
  56.   (* Mit dieser Prozedur kann die Druckausgabe in eine andere Datei *
  57.    * als bei ConfigPrinter angegeben umgeleitet werden.             *)
  58.    
  59. PROCEDURE Steuer( nr : INTEGER; VAR wert : INTEGER );
  60.   (* Schickt den Steuercode "nr" an den Drucker. Wenn für die            *
  61.    * Funktion ein Parameter erforderlich ist, sollte er in "wert" stehen.*
  62.    * In "wert" wird -1 zurückgegeben, wenn der Parameter verwendet wurde.*)
  63.  
  64. PROCEDURE PrintSteuer( nr, wert : INTEGER );
  65.   (* Aufruf von Steuer. Nur eingebaut, damit im Prozeduraufruf konstante *
  66.    * Parameter verwendet werden können.                                  *)
  67.  
  68. PROCEDURE SetLQ( lq : BOOLEAN );
  69.   (* Setzt/löscht das LQ-Flag für die Druckausgabe *)
  70.         
  71. PROCEDURE PrintLn; (* Druckt ein Zeilenende *)
  72.   
  73. PROCEDURE PrintFormFeed; (* Sendet den Code für Seitenende *)
  74.         
  75. PROCEDURE PrintChar(c:CHAR);
  76.   (* wandelt das Zeichen "c" gemäß der Druckeranpassung um und *
  77.    * schickt den Code an den Drucker                           *)
  78.        
  79. PROCEDURE PrintString( ein : ARRAY OF CHAR );
  80.   (* wandelt die Zeichenkette "ein" gemäß der Druckeranpassung *
  81.    * um und schickt den Code an den Drucker                    *)
  82.         
  83. PROCEDURE PrintString4( s0, s1, s2, s3 : INTEGER; str : ARRAY OF CHAR );
  84.   (* Führt die Steuerfunktionen s0 bis s3 aus und ruft dann     *
  85.    * PrintString auf. Ist s0 .. s2 eine Funktion mit Parameter, *
  86.    * wird der nachfolgende Parameter mit übergeben. Ist s3 eine *
  87.    * Funktion mit Parameter, wird sie nicht ausgeführt.         *)
  88.  
  89. PROCEDURE PrintDirektString( str : ARRAY OF CHAR );
  90.   (* Schickt die Zeichenkette "ein" ohne Umwandlung an den Drucker *)
  91.   
  92. PROCEDURE PrintDirekt( c : CHAR );
  93.   (* Schickt das Zeichen "c" ohne Umwandlung an den Drucker *)
  94.  
  95. END DruckTreiber.
  96.